package com.common.util;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

/**
 * @describe: 集合操作工具类
 */
public class CollectionUtil {

    /**
     * 判断集合是否为空
     * @param collection 集合类型的对象
     * @return 如果集合对象为空或者集合的size为0就返回true, 否则返回false 
     */
    public static <T> boolean isNullOrEmpty(final Collection<T> collection) {
        return collection == null || collection.isEmpty();
    }

    /**
     * 判断集合不为空或者null
     * @param collection 集合类型的对象
     * @return 如果集合对象为空或者集合的size为0就返回false, 否则返回true
     */
    public static <T> boolean notNullOrEmpty(final Collection<T> collection) {
        return !(collection == null || collection.isEmpty());
    }

    /**
     * 拆分集合
     * @param <T>
     * @param resList 要拆分的集合
     * @param count   每个集合的元素个数
     * @return 返回拆分后的各个集合
     */
    public static <T> List<List<T>> split(final List<T> resList, final int count) {

        if (resList == null || count < 1)
            return null;
        List<List<T>> ret = new ArrayList<List<T>>();
        int size = resList.size();
        //数据量不足count指定的大小
        if (size <= count) {
            ret.add(resList);
        } else {
            int pre = size / count;
            int last = size % count;
            //前面pre个集合，每个大小都是count个元素
            for (int i = 0; i < pre; i++) {
                List<T> itemList = new ArrayList<T>();
                for (int j = 0; j < count; j++) {
                    itemList.add(resList.get(i * count + j));
                }
                ret.add(itemList);
            }
            //last的进行处理
            if (last > 0) {
                List<T> itemList = new ArrayList<T>();
                for (int i = 0; i < last; i++) {
                    itemList.add(resList.get(pre * count + i));
                }
                ret.add(itemList);
            }
        }
        return ret;

    }
}
